1. Field of the Invention
The present invention broadly relates to the addressing of real storage in a computer system and, more particularly, is concerned with a virtual address translation mechanism for formulating a real storage address of at least a portion of either a contiguous or noncontiguous segment of storage.
2. Description of the Prior Art
Contemporary computer systems often are accessible to a plurality of users, programs and instruction processors, and in such cases they operate in a multiprocessing/multiprogramming environment on multiple programs stored in the storage or memory of the system. The individual user writes his program as though it is to be run by itself, and the program may use all the system resources accordingly. The computer system provides the services necessary to support the program and coordinate it with other programs and system hardware elements in operation. The physical hardware in the system is combined with an executive program to simulate a more powerful hardware machine for which the programs are written. Within this type of multiprocessing environment, it appears to each user that he has his own dedicated computer system.
However, operation of a computer system in a multiprocessing/multiprogramming environment introduces storage addressing problems. The real or physical storage addresses in one program must not conflict with the real storage addresses in another program. Hence, conventional physical addressing concepts are difficult to implement in a multiprocessing system.
Therefore, contemporary multiprocessing computer systems ordinarily utilize some form of virtual addressing. With virtual addressing, the user writes his program as though the program is to be run by itself on its own, or virtual, machine. Several programs may refer to the same virtual address, but these correspond to different real storage addresses. Thus, a multiprocessing computer system must include some means to convert or translate virtual addresses into real addresses. Further, the system must include some means for assuring that the translations are made properly so that a virtual address in one program only refers to its corresponding real address and not to some other real address which corresponds to the same virtual address in another program.
The operation of a computer system in a multiprocessing environment with any form of virtual addressing raises storage space allocation and utilization problems. Prior art systems have employed a variety of storage allocation and utilization schemes. These schemes predominately fall into three categories: segmentation; paging; or some combination of both. In devising an optimum scheme for a given computer system, compromises or trade-offs must be struck between a number of factors.